package com.kuang.design.structural.adapter;

import com.kuang.design.structural.adapter.clazz.ZhMoviePlayerAdapter;
import com.kuang.design.structural.adapter.obj.ZhMoviePlayerObjAdapter;

/**
 * 适配器模式
 * 1、系统原本已存在两个接口 player、translator没有任何关系
 * 需求 英文字幕翻译为中文
 * 2、在不改变原有系统基础上实现这个功能需要一个适配器
 * 系统原本的接口不能修改，扩展一个新的类连接之前不同的类
 *
 */
public class MainTest {
    public static void main(String[] args) {

        MoviePlayer moviePlayer = new MoviePlayer();
        //直接播放没有翻译
        moviePlayer.play();
        System.out.println("**************直接播放**************");

        //适配器
        EnMovieAdapter jpMovieAdapter = new EnMovieAdapter();
        String play1 = jpMovieAdapter.play();
        EN_ZhTranslator en_zhTranslator = new EN_ZhTranslator();
        en_zhTranslator.translate(play1);

        System.out.println("**************适配器**************");

        //类适配
        ZhMoviePlayerAdapter zhMoviePlayerAdapter = new ZhMoviePlayerAdapter(moviePlayer);
        String play = zhMoviePlayerAdapter.play();
        zhMoviePlayerAdapter.translate(play);

        System.out.println("**************类适配**************");
        //对象适配
        ZhMoviePlayerObjAdapter zhMoviePlayerObjAdapter = new ZhMoviePlayerObjAdapter(moviePlayer);
        zhMoviePlayerObjAdapter.play();

        System.out.println("**************对象适配**************");
    }
}
